package main

import "fmt"

/*
数组的初始化方式
*/
func main() {
	//模型上:
	//前面为行, 后面为列
	//内存地址上:
	//六个连续内存地址, 前3个为arr[0], 后3个为arr[1]
	var arr [2][3]int16
	arr[0][1] = 47
	arr[0][0] = 82
	arr[1][1] = 25
	fmt.Println(arr)

	//int16 两字节
	//内存地址: &arr = &arr[0] = &arr[0][0]
	fmt.Printf("arr[ ][ ]的地址为：%p", &arr)
	fmt.Println()
	fmt.Printf("arr[0][ ]的地址为：%p", &arr[0])
	fmt.Println()
	fmt.Printf("arr[0][0]的地址为：%p", &arr[0][0])
	fmt.Println()

	//arr[ ][ ]的地址为：0xc00000a0d0
	//arr[0][ ]的地址为：0xc00000a0d0
	//arr[0][0]的地址为：0xc00000a0d0
	//arr[0][1]的地址为：0xc00000a0d2
	//arr[0][2]的地址为：0xc00000a0d4
	//arr[1][ ]的地址为：0xc00000a0d6
	//arr[1][0]的地址为：0xc00000a0d6
	//2-0=2 两字节, 表示 arr[0][0] arr[0][1] 为连续空间
	//6-0=6 三字节, 表示 arr[1][0] 在 arr[0][2] 之后
	fmt.Printf("arr[0][1]的地址为：%p", &arr[0][1])
	fmt.Println()
	fmt.Printf("arr[0][2]的地址为：%p", &arr[0][2])
	fmt.Println()
	fmt.Printf("arr[1][ ]的地址为：%p", &arr[1])
	fmt.Println()
	fmt.Printf("arr[1][0]的地址为：%p", &arr[1][0])
	fmt.Println()

	fmt.Println("---------------- ---------------- ----------------")

}
